import store from '@/store'
import { Message } from 'element-ui'
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = [
  { path: '/login', component: () => import('@/views/login') },
  {
    path: '/',
    component: () => import('@/views/layout'),
    redirect: '/dashboard',

    children: [
      { path: 'dashboard', component: () => import('@/views/dashboard') },
      { path: 'article', component: () => import('@/views/article') }
    ]
  }
]
const router = new VueRouter({
  routes
})

// 添加前置路由守卫
router.beforeEach((to, from, next) => {
  // 有没有 token
  // 这个项目可以非常简单, 因为除了登录页外, 没有任何白名单
  // 在非组件对象中, 如何获取 Vuex 的数据?
  // 引入 store 对象, 就可以获取 store 中的数据
  // console.log(store)
  // 这里的 store 对象很像组件中的 this.$store
  // this.$store.state.user.token
  const token = store.state.user.token
  if (!token && to.path !== '/login') {
    // 提醒用户
    Message.warning('您还未登录, 请登录')
    // 强制跳转到登录页
    return next('/login')
  }
  // 其他情况都可以放行
  next()
})

export default router
